package org.jsonstruts.utils;

public class ConvertType {

	public static Object convert(Object target, String param, String paramValue) {
		String type = null;
		Class typeclass = ReflectUtils.getClassType(target, param);
		if (typeclass != null)
			type = typeclass.getName();
		if (type == null) {
			return null;
		}
		if (type.equals("java.lang.String")) {
			return paramValue;
		} else if (type.equals("int") || type.equals("java.lang.Integer")) {
			return Integer.parseInt(paramValue);
		} else if (type.equals("long") || type.equals("java.lang.Long")) {
			return Long.parseLong(paramValue);
		} else if (type.equals("short") || type.equals("java.lang.Short")) {
			return Short.parseShort(paramValue);
		} else if (type.equals("byte") || type.equals("java.lang.Byte")) {
			return Byte.parseByte(paramValue);
		} else if (type.equals("float") || type.equals("java.lang.Float")) {
			return Float.parseFloat(paramValue);
		} else if (type.equals("double") || type.equals("java.lang.Double")) {
			return Double.parseDouble(paramValue);
		} else if (type.equals("char") || type.equals("java.lang.Character")) {
			return paramValue.charAt(0);
		} else if (type.equals("boolean") || type.equals("java.lang.Boolean")) {
			return Boolean.parseBoolean(paramValue);
		} else if (type.equals("java.sql.Date")) {
			return java.sql.Date.valueOf(paramValue);
		} else if (type.equals("java.sql.Timestamp")) {
			return java.sql.Timestamp.valueOf(paramValue);
		} else if (type.equals("java.sql.Clob")) {
			try {
				return new javax.sql.rowset.serial.SerialClob(paramValue.toCharArray());
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return paramValue;

	}
}
